#
# This file is a part of the open-eBackup project.
# This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
# If a copy of the MPL was not distributed with this file, You can obtain one at
# http://mozilla.org/MPL/2.0/.
#
# Copyright (c) [2024] Huawei Technologies Co.,Ltd.
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
#

from dws.backup.cluster_backup import ClusterBackup
from dws.backup.database_backup import DataBaseBackup
from dws.backup.schema_backup import SchemaBackup
from dws.backup.table_backup import TableBackup
from dws.commons.const import BackupResType


class BackupFactory:

    @staticmethod
    def get_backup_ins(backup_type, *args, **kwargs):
        if backup_type == BackupResType.CLUSTER.value:
            return ClusterBackup(*args, **kwargs)
        elif backup_type == BackupResType.DATABASE.value:
            return DataBaseBackup(*args, **kwargs)
        elif backup_type == BackupResType.SCHEMA.value:
            return SchemaBackup(*args, **kwargs)
        elif backup_type == BackupResType.TABLE.value:
            return TableBackup(*args, **kwargs)

        raise Exception(f'BackupResType is err, {backup_type}.')
